home *** CD-ROM | disk | FTP | other *** search
-
- #include "../CGVPMacro.csi"
-
- VS20Only
-
- VertAttributes { POSITION_3 TEXCOORD0_2 TANG_3X3 }
- MainInput { VIEWPROJ_MATRIX, LIGHT_POS, CAMERA_POS }
- DeclarationsScript
- {
- IN_T0_TANG
- OUT_T0_T1_T2_T3_T4_T5
- }
- PositionScript = PosCommon
- CoreScript
- {
- OUT.Tex0.xy = IN.TexCoord0.xy; // diffuse
- OUT.Tex1.xy = IN.TexCoord0.xy; // bump
- OUT.Tex2.xy = IN.TexCoord0.xy; // gloss
-
- TANG_MATR
-
- // store normalized light vector
- float3 lVec = LightPos.xyz - vPos.xyz;
- float3 lightVec = mul(objToTangentSpace, normalize(lVec));
- OUT.Tex3.xyz = lightVec.xyz;
-
- // store normalized view vector
- float3 vVec = CameraPos.xyz - vPos.xyz;
- float3 viewVec = mul(objToTangentSpace, normalize(vVec));
- OUT.Tex4.xyz = viewVec.xyz;
-
- float3 normal = IN.TNormal.xyz;
- float fDot = dot(vVec, normal);
- objToTangentSpace[2] = normal * sign(fDot);
-
- float3 halfAngleVector = normalize(lVec.xyz + vVec);
- OUT.Tex5.xyz = mul(objToTangentSpace, halfAngleVector);
- }
-